﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.ServiceModel;
//using AutoMapper;
//using Core;
//using IglooCoder.Commons.WcfNhibernate;
//using Infrastucture;
//using WcfService1.DTO;

//namespace WcfService1
//{
//    // NOTE: You can use the "Rename" command on the "Refactor" Pallet to change the class name "PalletServices" in code, svc and config file together.
//    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
//    [NHibernateContext]
//    public class PalletServices : IPalletServices
//    {
//        private readonly PalletRepository PalletRepository;

//        public PalletServices()
//        {
//            PalletRepository = new PalletRepository(new WcfSessionStorage());
//        }

//        #region IPalletServices Members

//        public List<PalletDTO> GetList(int page, out long recordCount, string sortProperty = null,
//                                       string sortType = "ASC")
//        {
//            var Pallets = new List<Pallet>();
//            var Results = new List<PalletDTO>();

//            if (string.IsNullOrEmpty(sortProperty))
//            {
//                Pallets = PalletRepository.GetDataPaged(page, 30).ToList();
//            }
//            else
//            {
//                Pallets = PalletRepository.GetDataPaged(page, 30, sortProperty, sortType).ToList();
//            }

//            recordCount = PalletRepository.RecordCount;

//            Pallets.ForEach(x =>
//                                {
//                                    var PalletDto = new PalletDTO();
//                                    Mapper.Map(x, PalletDto);
//                                    //AutoMapper.Mapper.Map(x.ParentPallet, PalletDto.ParentPallet);
//                                    Results.Add(PalletDto);
//                                }
//                );

//            return Results;
//        }

//        public bool Save(PalletDTO PalletDTO)
//        {
//            bool res;
//            try
//            {
//                Pallet Pallet = PalletRepository.GetDataOne(x => x.KodePallet == PalletDTO.KodePallet);
//                var user = new User();
//                if (Pallet == null)
//                {
//                    Pallet = new Pallet();
//                    PalletDTO.created_date = DateTime.Now;
//                    //AutoMapper.Mapper.Map(PalletDTO.created_by, user);
//                    //PalletDTO.modified_by = null;
//                }
//                else
//                {
//                    PalletDTO.modified_date = DateTime.Now;
//                    //AutoMapper.Mapper.Map(PalletDTO.modified_by, user);
//                }
//                Mapper.Map(PalletDTO, Pallet);
//                PalletRepository.SaveOrUpdate(Pallet);
//                res = true;
//            }
//            catch (Exception)
//            {
//                res = false;
//            }

//            return res;
//        }


//        public bool Delete(PalletDTO PalletDto)
//        {
//            bool res;
//            try
//            {
//                var Pallet = new Pallet();
//                Mapper.Map(PalletDto, Pallet);
//                PalletRepository.Delete(Pallet);
//                res = true;
//            }
//            catch (Exception)
//            {
//                res = false;
//            }

//            return res;
//        }


//        public List<PalletDTO> GetListByCriteria(Dictionary<String, Object> criteria, string expression, int page,
//                                                 out long recordCount)
//        {
//            var Pallets = new List<Pallet>();
//            var Results = new List<PalletDTO>();
//            Pallets = PalletRepository.GetDataPaged(criteria, expression, page, 30).ToList();
//            recordCount = PalletRepository.RecordCount;
//            Pallets.ForEach(x =>
//                                {
//                                    var PalletDto = new PalletDTO();
//                                    Mapper.Map(x, PalletDto);
//                                    Results.Add(PalletDto);
//                                }
//                );

//            return Results;
//        }


//        public List<PalletDTO> GetAllPallet()
//        {
//            IList<Pallet> Pallets = PalletRepository.FetchAll();
//            IEnumerable<PalletDTO> Results = from p in Pallets
//                                             select new PalletDTO {KodePallet = p.KodePallet};

//            return Results.ToList();
//        }


//        public PalletDTO GetPallet(String kodePallet)
//        {
//            Pallet Pallet = PalletRepository.GetDataOne(x => x.KodePallet == kodePallet);
//            var PalletDto = new PalletDTO();
//            Mapper.Map(Pallet, PalletDto);
//            return PalletDto;
//        }

//        public List<PalletDTO> GetPalletList(string kodePallet)
//        {
//            List<Pallet> Pallets = PalletRepository.GetDataList(x => x.KodePallet.Contains(kodePallet)).ToList();
//            var Results = new List<PalletDTO>();
//            Pallets.ForEach(x =>
//                                {
//                                    var PalletDto = new PalletDTO();
//                                    Mapper.Map(x, PalletDto);
//                                    Results.Add(PalletDto);
//                                }
//                );

//            return Results;
//        }

//        public List<PalletDTO> GetPalletByWarehouse(WarehouseDTO warehouse)
//        {
//            List<Pallet> Pallets =
//                PalletRepository.GetDataList(x => x.Warehouse.KodeWarehouse == warehouse.KodeWarehouse).ToList();
//            IEnumerable<PalletDTO> Results = from p in Pallets
//                                             select new PalletDTO {KodePallet = p.KodePallet};

//            return Results.ToList();
//        }

//        #endregion
//    }
//}